csapp第九章 虚拟存储器
为了有效管理存储器并少出错,现代操作系统提供了对主存的抽象概念,叫做虚拟存储器
需要知道:
- 虚拟存储器是硬件异常,硬件地址翻译,主存和磁盘文件,内核软件的完美交互
- 为每一个进程提供一个大的,一致的和私有的地址空间
- 将主存作为磁盘地址空间的高速缓存
- 保护每个进程的地址空间不被其他进程破坏
虚拟存储器遍布在计算机系统所有层次,硬件异常,汇编器,链接器,加载器,共享对象,文件和进程中扮演重要角色
虚拟存储器是危险的:
引用变量,间接引用指针,调用malloc动态分配程序,就会和虚拟存储器交互
如果使用不当,将遇到危险复杂的与存储器有关的错误:段错误,保护错误
物理寻址:
计算机主存被组成为m个连续的字节大小的单元数组,每个字节地址叫做物理地址;
cpu访问存储器最自然方式是使用物理地址,该方式成为物理寻址
虚拟寻址
cpu生成一个虚拟地址,来访问主存
地址翻译
将虚拟地址转为物理地址就叫做地址翻译
地址翻译需要cpu和操作系统之间的合作
主要利用储存在主存中的查询表来动态翻译虚拟地址
查询表则由操作系统进行管理
地址空间
地址空间就是一个非负整数地址的有序集合
如果地址空间中整数连续,则成为线性地址空间
一个地址空间大小由表示最大地址需要的位数来描述
虚拟地址空间就是在一个带虚拟存储器的系统中,cpu从一个有N=2^n个地址的地址空间中生成虚拟地址,这个地址空间成为虚拟地址空间
那当然也有物理地址空间,与系统中物理存储器的M=2^m个字节对应